<?php

namespace app\common\model\shop;

use app\common\model\BaseModel;
use think\Db;
use think\db\exception\DbException;

/**
 * 门店管理
 * Class Shop
 * @package app\common\model\shop
 */
class ShopModel extends BaseModel
{
    //
    protected $name = 'shop';

    protected $json = ['area_code'];
    // 设置字段信息
    protected $schema = [
        'id' => 'int',        //
        'mer_id' => 'string',        // 所属商户
        'title' => 'string',        // 标题
        'manager' => 'string',        // 管理员
        'mobile' => 'string',        // 联系手机
        'province' => 'string',        // 省
        'city' => 'string',        // 市
        'country' => 'string',        // 县区
        'address' => 'string',        // 详细地址
        'lat' => 'string',        // 经度
        'lng' => 'string',        // 纬度
        'status' => 'int',        // 状态 0停用 1正常
        'op_user' => 'int',        //
        'create_at' => 'datetime',        // 创建时间
        'update_at' => 'datetime',        // 更新时间
    ];

    /**
     * 检查手机号是否存在
     * @param string $mer_id
     * @param string $mobile
     * @return int|mixed|string|null
     */
    public function checkMobile(string $mer_id, string $mobile)
    {
        if (empty($mer_id) || empty($mobile)) {
            return 0;
        }
        return $this->where('mer_id', $mer_id)->where('mobile', $mobile)->value([], 'id');
    }

    /**
     * @title 检查店铺状态
     */
    public function checkShopStatus(string $mer_id, string $shop_id): bool
    {
        $info = $this->where('mer_id', $mer_id)->where('id', $shop_id)->field('id,status')->find();
        return !(empty($info) || $info['status'] !== 1);
    }

    /**
     * 根据ID获取对应的title
     * @param        $shopIds
     * @param string $field
     * @return mixed
     */
    public function getShopTitle($shopIds, $field = 'title')
    {
        $isArray = is_array($shopIds);
        $ids = $isArray ? $shopIds : [$shopIds];
        $list = $this->db('shop')->removeOption()->whereIn('id', $ids)
            ->cache(true, MINUTES_SECOND_3, $this->name)->column($field, 'id');
        return $isArray ? $list : $list[$shopIds] ?? '';
    }

    /**
     * 更新导购数量
     * @param  $shopId
     * @param int $type |type 1:增加 ， 2减少
     * @return int|string
     * @throws DbException
     */
    public function saveSalesNum($shopId , int $type = 1)
    {
        return $this->where('id' , $shopId)->update(null,[
            'sales_man_num' => (new Db)->raw( ($type === 1? '+' : '-') . '1'),
        ]);
    }
}
